package midend.IR_Value;

import midend.IR_Type.IR_Const;
import midend.IR_Type.IR_Float;
import midend.IR_Type.IR_Type;

public class IR_Float_Value extends IR_Value{
    private float Float_Value;
    private IR_Type Float_Type;
    private boolean is_const;
    private String hexNumber = "";

    public IR_Float_Value(float value,IR_Type typ){
        this.Float_Value = value;
        this.Float_Type = typ;
        this.hexNumber = "0x" + Long.toHexString(Double.doubleToLongBits(value));
        is_const = false;
    }

    //float  不需要进行区分，不像 int需要在转IR的时候区分是 int32 还是 int1
    public IR_Float_Value(float value){
        this.Float_Value = value;
        this.Float_Type = IR_Float.IR_Float();
        this.hexNumber = "0x" + Long.toHexString(Double.doubleToLongBits(value));
        is_const = false;
    }

    public IR_Float_Value() {
    }

    public IR_Float_Value(float value,IR_Type float_Type,boolean is_const) {
        this.Float_Type = float_Type;
        this.Float_Value = value;
        this.is_const = is_const;
        this.hexNumber = "0x" + Long.toHexString(Double.doubleToLongBits(value));
    }

    public float get_Float_Value() {
        return Float_Value;
    }

    @Override
    public String get_ValueName() {
        //System.out.println(this.hexNumber);
        return this.hexNumber;
    }

    @Override
    public IR_Type get_Type() {
        return this.Float_Type;
    }

    @Override
    public int get_Const_Type() {
        return IR_Const.IR_ConstFloat;
    }

    @Override
    public String toString() {
        return "IR_Float_Value:"+Float_Value;
    }
}
